A. Technical Field
The present invention relates to programming memory on a semiconductor chip. More particularly, this invention relates to debugging program instructions in a microcontroller.
B. Related Art
Microcontrollers are used to control a plethora of electronic products, including cellular phones, fax machines, microwave ovens, automobile controls, and so on. The programming embedded into a microcontroller is developed and debugged on various levels using various tools. One such tool is an in-circuit emulation (ICE) system.
An ICE system allows users access to data from within the microcontroller during its operation, data such as the contents of registers and stacks. Knowledge of such data is very useful in the debugging process. Such data may be made available, for example, by way of single-stepping through a program, or by insertion of a break point within the program, or by an external interrupt originating from a user.
In order to implement ICE, a conventional ICE system uses a special "bond-out" version of the microcontroller which is a modified version of the production microcontroller. The bond-out microcontroller is so called because several pads connected to the internal data bus of the microcontroller are wire-bonded out from the silicon chip to several extra external pins.
Such a conventional ICE system has several disadvantages. First, the bond-out version of the microcontroller is sold in relatively low volume, yet it takes substantial resources from the microcontroller company to develop and maintain. Thus, it is not surprising that the bond-out microcontroller is usually rather expensive. Second, the bond-out microcontroller may have substantial differences from the production controller. For example, the bond-out microcontroller may use a different clock speed, forcing the ICE system to run at a different speed than the production system. In that case, the ICE system may be useful mainly for determining and fixing functional bugs only. Third, a special debug board may need to be used in place of the production board. This may be necessary in order to incorporate the bond-out microcontroller and/or interface with the ICE electronics. Some bugs in the production board may not be reproduced in the debug board.